/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package editorTexto;

import conexionBD.ConexionServidor;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.jsf.FacesContextUtils;

/**
 *
 * @author Juan Jose
 */
@ManagedBean
@ViewScoped
public class plantillaExpediente implements Serializable {

 WebApplicationContext reporteExp = FacesContextUtils.getRequiredWebApplicationContext(FacesContext.getCurrentInstance());
 JdbcTemplate jdbcTemplate = (JdbcTemplate)reporteExp.getBean("jdbcTemplate");

 private String Contenido;
 private String numExpediente;
 
 //punto 7
 private String perfilcuadra = "";
 private String lineaconstruccion = "";
 private String perfilfrentecuadra = "";

 //punto0
    private String tecnico = "";
    private String fechaprogramada = "";
    private String tipointervencion= "";
    private String fechaconstruccion = "";
    private String latitud = "";
    private String longitud = "";
    private String nombretradicional = "";
    private String nombreactual = "";
    private String codigoibc = "";
    private String areainmueble = "";
    private String nombrepropiedad = "";
    private String codigoibci = "";
    private String nombre_resp = "";
    private String telresidencia_resp = "";
    private String teloficina_resp = "";
    private String email_resp = "";
    private String direccion_resp = "";
    private String registro_resp = "";
    private String observaciones = "";
    private String resenia = "";

    //Parte1
    private String idexpediente = "";
    private String fechasolicitud = "";
    private String idinmueble = "";
    private String direccion_inm = "";
    private String constructor = "";
    private String alnorte = "";
    private String nombrepro = "";
    private String direccion_pro = "";
    private String telresidencia_pro = "";
    private String teloficina_pro = "";
    private String email_pro = "";
    private String alsur = "";
    private String aleste = "";
    private String aloeste = "";
    private String matriculacnr = "";
    private String depto_inm = "";
    private String muni_inm = "";
    private String conclusion = "";
    private String resolucion = "";
    private String proteccion = "";
    private String observaciones4 = "";
    private String resenia4 = "";
    private String parcela;
    private String linea;
    private String construccion;
    private String obsvarq;
    private String observaciones2;
    private String anchorodaje = "";
    private String anchoarriate = "";
    private String anchoacera = "";


    public String getContenido() {
        return Contenido;
    }

    public void setContenido(String Contenido) {
        this.Contenido = Contenido;
    }

    public void addPlantillaBase(){
    String sql;
    sql="update plantilla set contenidoplantilla ='"+this.Contenido+"' where idplantilla = 1";
    jdbcTemplate.execute(sql);
    }


    public String getNumExpediente() {
        return numExpediente;
    }

    public void setNumExpediente(String numExpediente) {
        this.numExpediente = numExpediente;
    }

    public void buscar(){
        String sql;
        sql="SELECT idexpediente FROM expediente WHERE idexpediente = ?";
        String[] params = {this.numExpediente};
        String idExpediente = null;
        try{
        idExpediente = (String) jdbcTemplate.queryForObject(sql, params, String.class);
        }catch (DataAccessException e){
         System.out.println(e.getMessage());
        }
        if(idExpediente!=null)
          {
          DatosExpediente();
          }
         else
          {
            Aviso();
           
          }
    }



        public void DatosExpediente(){
         
       
         parte1();
         punto0();
         punto2();
         punto4();
         punto6();
         punto11a();
         punto11b();

         punto7();
        

         //Cargar Plantilla

        String sql;
        Integer numplantilla = 1;
        sql="SELECT CONTENIDOPLANTILLA FROM PLANTILLA WHERE IDPLANTILLA = ?";
        Integer[] paramsI = {numplantilla};
        String contedidoplantilla = (String) jdbcTemplate.queryForObject(sql, paramsI, String.class);
        //this.Contenido = contedidoplantilla;

        //parte1
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[numexp]", idexpediente);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[fechasol]", fechasolicitud);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[numinmb]", idinmueble);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[depa]", depto_inm);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[muni]", muni_inm);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[dirmub]", direccion_inm);
         // contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[numcnr]", matriculacnr);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[disen]", constructor);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[alnor]", alnorte);
          contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[nomprop]", nombrepro);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[dirprop]", direccion_pro);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tel1]", telresidencia_pro);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tel2]", teloficina_pro);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[corprop]", email_pro);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[alsur]", alsur);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[alest]", aleste);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[aloste]", aloeste);
//           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[bser]", observacion);
//           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[usosue]", uso_actual);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[numcnr]", matriculacnr);

           //punto 7
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[ima91]", perfilcuadra);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[ima92]", lineaconstruccion);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[ima93]", perfilfrentecuadra);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[9roda]", anchorodaje);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[9arria]", anchoarriate );
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[9acera]", anchoacera );

           //punto 0
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tecnicoEncargado]",tecnico);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[fecha1]",fechaprogramada);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tipoobra]",tipointervencion);
           //contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[lati]",latitud);
          // contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[log]",longitud);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[nobtrad]",nombretradicional);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[nobact]",nombreactual);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[codibc]",codigoibci);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[ar2]",areainmueble);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tipopro]",nombrepropiedad);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[nomrespo]",nombre_resp);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[telresp]",telresidencia_resp);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tel2resp]",teloficina_resp);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[corresp]",email_resp);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[dirresp]",direccion_resp);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[registro2]",registro_resp);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[obser4]",observaciones);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[sumario]",resenia);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[fcons]",fechaconstruccion);
           contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[obser]",observaciones2);
           //punto4
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[capro]", proteccion);
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[obser4]",observaciones4);
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[resena4]",resenia4);

            //punto6
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[tipoparc]",parcela);
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[contr6]",construccion);
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[lineacontr]",linea);
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "$[obsr6]",obsvarq);

            

           //punto11
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "[$conclusion]",conclusion);
            contedidoplantilla = StringUtils.replace(contedidoplantilla, "[$resolu]",resolucion);


           this.Contenido = contedidoplantilla;
        }

          public void Aviso(){
          this.numExpediente = "NO EXISTE";
          this.Contenido = " ";
        }

public void punto7(){
         String sqlexp;
         sqlexp ="select idexpediente, perfilcuadra, lineaconstruccion,"
                 + " anchoacera, anchoarriate, anchorodaje, perfilfrentecuadra"
                 + " from (select a.idexpediente, perfilcuadra, lineaconstruccion,"
                 + " to_char(anchoacera,'999.99') anchoacera, "
                 + "to_char(anchoarriate,'999.99') anchoarriate, "
                 + "to_char(anchorodaje,'999.99') anchorodaje,  "
                 + "perfilfrentecuadra from expediente a left join entorno b on "
                 + "(a.idexpediente = b.idexpediente)) temp4 where idexpediente = ?";
         String[] params = {this.numExpediente};
         Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
         perfilcuadra  = datos.get("perfilcuadra");
         lineaconstruccion = datos.get("lineaconstruccion");
         perfilfrentecuadra = datos.get("perfilfrentecuadra");
         anchoarriate = datos.get("anchoarriate");
         anchorodaje = datos.get("anchorodaje");
         anchoacera = datos.get("anchoacera");
         nulospunto7();

}


public void punto0(){
         String sqlexp;
         sqlexp = "select tecnico,"
                 + "to_char(fechaprogramada,'DD-MM-YYYY')fechaprogramada,"
                 + "tipointervencion,"
                 + "fechaconstruccion,"
                 + " latitud,"
                 + "longitud,"
                 + " nombretradicional,"
                 + "nombreactual,"
                 + "codigoibci,"
                 + "to_char(areainmueble,'999.99') areainmueble,"
                 + "nombrepropiedad, "
                 + "nombre_resp,"
                 + " telresidencia_resp,"
                 + "teloficina_resp, "
                 + "email_resp, "
                 + "direccion_resp, "
                 + "registro_resp, "
                 + "observaciones,"
                 + " resenia "
                 + "from informacionexpediente where codexp = ?";
         String[] params = {this.numExpediente};
         Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
         tecnico  = datos.get("tecnico");
         fechaprogramada = datos.get("fechaprogramada");
         tipointervencion = datos.get("tipointervencion");
        //  latitud  = datos.get("latitud");
        // longitud  = datos.get("longitud");
         nombretradicional = datos.get("nombretradicional");
         nombreactual  = datos.get("nombreactual");
         codigoibc  = datos.get("codigoibc");
         areainmueble  = datos.get("areainmueble");
         nombrepropiedad  = datos.get("nombrepropiedad");
         codigoibci  = datos.get("codigoibci");
         nombre_resp  = datos.get("nombre_resp");
         telresidencia_resp  = datos.get("telresidencia_resp");
         teloficina_resp  = datos.get("teloficina_resp");
         email_resp = datos.get("email_resp");
         direccion_resp  = datos.get("direccion_resp");
         registro_resp = datos.get("registro_resp");
         observaciones2  = datos.get("observaciones");
         resenia  = datos.get("resenia");
          // = datos.get("");
          // = datos.get("");
         nulos0();
         // System.out.println(this.latitud);

        

}




public void punto1(){
         String sqlexp;
         sqlexp ="select perfilcuadra, lineaconstruccion,perfilfrentecuadra FROM ENTORNO where idexpediente  = ?";
         String[] params = {this.numExpediente};
         Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
         perfilcuadra  = datos.get("perfilcuadra");


}


public void parte1()
      {
  String sqlexp;
         sqlexp = "select idexpediente, fechasolicitud, nombre_pro, "
                 + "direccion_pro, telresidencia_pro, teloficina_pro,"
                 + " email_pro, constructor, fechaconstruccion, alnorte, "
                 + "alsur, aleste, aloeste, direccion_inm, matriculacnr "
                 + "from (select a.idexpediente, fechasolicitud,"
                 + " (primernombre_pro ||' '||segundonombre_pro ||' '||primerapellido_pro ||' '||segundoapellido_pro) nombre_pro,"
                 + " direccion_pro, telresidencia_pro, teloficina_pro, email_pro, constructor, fechaconstruccion, alnorte, alsur, "
                 + "aleste, aloeste, direccion_inm, matriculacnr from expediente a left join  solicitud b on ( a.idexpediente = b.idexpediente) left join"
                 + " propietario c on (b.idpropietario = c.idpropietario) left join inmueble d on (b.idinmueble = d.idinmueble) left join colindante e on "
                 + "(d.idinmueble = e.idinmueble)) parte1 where idexpediente = ?";
         String[] params = {this.numExpediente};
         Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
         idexpediente = datos.get("idexpediente");
         fechasolicitud = datos.get("fechasolicitud");
         matriculacnr = datos.get("matriculacnr");
         direccion_inm = datos.get("direccion_inm");
         constructor = datos.get("constructor");
         alnorte = datos.get("alnorte");
         nombrepro = datos.get("nombre_pro");
         direccion_pro = datos.get("direccion_pro");
         telresidencia_pro = datos.get("telresidencia_pro");
         teloficina_pro = datos.get("teloficina_pro");
         email_pro = datos.get("email_pro");
         alsur = datos.get("alsur");
         aleste = datos.get("aleste");
         aloeste = datos.get("aloeste");
         fechaconstruccion = datos.get("fechaconstruccion");
         nulosparte1();
       

}


public void nulos0(){
if(codigoibci == null)
{
 codigoibci=" ";
}
if(fechaprogramada == null)
{
 fechaprogramada = " ";   
}
if(tecnico == null)
{
tecnico = " ";
}
if(tipointervencion == null)
{
tipointervencion = " ";
}
if(fechaconstruccion == null)
{
fechaconstruccion = " ";
}
if(latitud == null)
{
latitud = " ";
}
if(longitud == null)
{
longitud = " ";
}
if(nombretradicional == null)
{
nombretradicional = " ";
}
if(nombreactual == null)
{
nombreactual = "";
}
if(areainmueble == null)
{
areainmueble = " ";
}
if(nombrepropiedad == null)
{
nombrepropiedad = " ";
}
if(nombre_resp == null)
{
nombre_resp = " ";
}
if(telresidencia_resp == null)
{
telresidencia_resp = " ";
}
if(teloficina_resp == null)
{
teloficina_resp = " ";
}
if(email_resp == null)
{
email_resp = " ";
}
if(direccion_resp == null)
{
 direccion_resp = " ";
}
if(registro_resp == null)
{
registro_resp = " ";
}
if(observaciones == null)
{
observaciones = " ";
}
if(resenia == null)
{
resenia = " ";
}
if(observaciones2 == null)
{
observaciones2 = " ";
}
}

public void nulosparte1(){
if(fechasolicitud == null)
{
 fechasolicitud=" ";
}
if(direccion_inm == null)
{
 direccion_inm=" ";
}
if(constructor == null)
{
 constructor=" ";
}
if(alnorte == null)
{
 alnorte=" ";
}
if(nombrepro == null)
{
 nombrepro=" ";
}
if(direccion_pro == null)
{
 direccion_pro=" ";
}
if(telresidencia_pro == null)
{
 telresidencia_pro=" ";
}
if(teloficina_pro == null)
{
 teloficina_pro=" ";
}
if(email_pro == null)
{
 email_pro=" ";
}
if(alsur == null)
{
 alsur=" ";
}
if(aleste == null)
{
 aleste=" ";
}
if(aloeste == null)
{
 aloeste=" ";
}
if(matriculacnr == null)
{
 matriculacnr=" ";
}
if(fechaconstruccion == null)
{
 fechaconstruccion=" ";
}



 }

public void punto11(){
   String sqlexp;
         sqlexp = "select  where idexpediente = ?";
         String[] params = {this.numExpediente};
         Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
         idexpediente = datos.get("idexpediente"); 

}

public void punto2(){
    String sqlexp;
    sqlexp = "select idexpediente,"
            + " nombredepartamento, "
            + "nombremunicipio"
            + " from solicitud a, inmueble b, municipio m, "
            + "departamento d where a.idinmueble = b.idinmueble"
            + " and b.idmunicipio = m.idmunicipio and "
            + "d.iddepartamento = b.iddepartamento and idexpediente= ?";
    String[] params = {this.numExpediente};
    Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
    depto_inm = datos.get("nombredepartamento");
    muni_inm = datos.get("nombremunicipio");
    nulospunto2();

}

public void nulospunto2(){
if(depto_inm == null)
{
 depto_inm =" ";
}
if(muni_inm == null)
{
 muni_inm =" ";
}
}

public void punto11a()
{
     String sqlexp;
     sqlexp = " select a.idexpediente ,definicionconclusion from expediente a left join conclusion b on (a.idexpediente = b.idexpediente) where a.idexpediente = ?";
     String[] params = {this.numExpediente};
     Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
     conclusion = datos.get("definicionconclusion");
     nulospunto11a();

}

public void punto11b()
{
     String sqlexp;
     sqlexp = " select a.idexpediente ,definicionresolucion from expediente a left join resolucion b on (a.idexpediente = b.idexpediente) where a.idexpediente = ?";
     String[] params = {this.numExpediente};
     Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
     resolucion = datos.get("definicionresolucion");
     nulospunto11b();

}


public void nulospunto11a(){
if(conclusion == null)
{
 conclusion =" ";
}

}

public void nulospunto11b(){
if(resolucion == null)
{
 resolucion =" ";
}
}

public void punto4()
    {
     String sqlexp;
     sqlexp = "select idexpediente, observaciones, resenia, proteccion from (select a.idexpediente, observaciones, resenia, proteccion from expediente a left join categorizacion_resenia b on (a.idexpediente = b.idexpediente) left join proteccion c on (b.idproteccion = c.idproteccion))temp2 where idexpediente = ?";
     String[] params = {this.numExpediente};
     Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
     observaciones4 = datos.get("observaciones");
     resenia4 = datos.get("resenia");
     proteccion = datos.get("proteccion");
     nullospunto4();
}

public void nullospunto4()
    {
    if(observaciones4 == null)
{
 observaciones4 =" ";
}
    if(resenia4 == null)
{
 resenia4 =" ";
}
    if(proteccion == null)
{
 proteccion =" ";
}

 }

public void punto6()
    {
 String sqlexp;
     sqlexp = " select idexpediente, parcela, linea,"
             + " construccion, observacionarquitec "
             + "from (select a.idexpediente, parcela, "
             + "linea, construccion, observacionarquitec"
             + " from expediente a left join arquitectonica b"
             + " on (a.idexpediente = b.idexpediente) "
             + "left join parcela c on (b.idparcela = c.idparcela)"
             + " left join linea d on (b.idlinea = d.idlinea)"
             + " left join construccion e on "
             + "(b.idconstruccion = e.idconstruccion))temp3 "
             + "where idexpediente = ?";
     String[] params = {this.numExpediente};
     Map<String,String> datos = jdbcTemplate.queryForMap(sqlexp, params);
     parcela = datos.get("parcela");
     linea = datos.get("linea");
     construccion = datos.get("construccion");
     obsvarq = datos.get("observacionarquitec");
     nullospunto6();

}

public void nullospunto6()
    {
    if(parcela == null)
{
 parcela =" ";
}
        if(linea == null)
{
 linea =" ";
}
        if(construccion == null)
{
 construccion =" ";
}
if(obsvarq == null)
{
 obsvarq =" ";
}
    }

 public void nulospunto7()
    {
 if(anchoarriate == null)
{
 anchoarriate =" ";
}
 if(anchorodaje == null)
{
 anchorodaje =" ";
}
 if(anchoacera == null)
{
 anchoacera =" ";
}


 }





}



